import 'package:flutter/material.dart';
import 'package:flutter_base/page/common/navigation_bar_widget.dart';
import 'package:flutter_base/page/home/home_page.dart';
import 'package:flutter_base/page/hot/hot_key_page.dart';
import 'package:flutter_base/page/knowleage/knowledge_page.dart';
import 'package:flutter_base/page/mine/mine_page.dart';

///
/// @DIR_PATH：lib/page/home
/// @TIME：2023/11/11 9:47
/// @AUTHOR：starr
/// @DESC：主页面,导航页面
///
class HomeMainPage extends StatefulWidget {
  const HomeMainPage({super.key});

  @override
  State<StatefulWidget> createState() {
    return _HomeMainState();
  }
}

class _HomeMainState extends State<HomeMainPage>
    with AutomaticKeepAliveClientMixin {
  //页面数组
  late List<Widget> pages;

  //底部标题
  late List<String> labels;

  //导航栏icon数组：未选中
  late List<Widget> icons;

  //导航栏icon数组：选中
  late List<Widget>? activeIcons;

  //[PageView]使用的控制器
  final PageController _pageController = PageController();

  @override
  void initState() {
    super.initState();

    //底部导航栏使用到的图标
    icons = [
      const Icon(Icons.home),
      const Icon(Icons.music_note),
      const Icon(Icons.message),
      const Icon(Icons.people),
    ];

    //底部导航栏使用到的标题文字
    labels = <String>[
      "首页",
      "热点",
      "知识",
      "我的",
    ];

    pages= [const HomePage(),
      const HotKeyPage(),
      KnowledgePage(),
      const MinePage()
    ];
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    //Scaffold 用来搭建页面的主体结构
    return NavigationBarWidget(
      pages: pages,
      icons: icons,
      labels: labels,
      controller: _pageController,
      onPageChange: (index){

      },
    );
  }

  //防止pageView滑动切换时，页面都重建
  //点击底部tab切换时，每一次页面都会新建和销毁，
  // 就好像android原生的fragment的replace方法，
  // 在android原生中我们使用hide和show的方式来防止重建，
  // 那么我们再flutter中如何实现呢，
  // 就是在每一个子页面的state类后面混合AutomaticKeepAliveClientMixin
  @override
  bool get wantKeepAlive => true;
}
